<?php

/**
 * Clase Sql Grafico
 * @author Luis Miguel Ponce.
 * @copyright hawasolutions
 * @version 1.0
 */
include_once "../cn/DBManager.php";
class daInec_grafico {
	
	private $objeto;
	private $sentencia;
	private $error;
	
	/**
	 * Constructor
	 */
	function __construct() {
		$this->objeto = new Conexion ();
		$this->sentencia = '';
		$this->error = new ErrorException ();
	}
	
	/**
	 * @return the $conexion
	 */
	public function getConexion() {
		return $this->objeto;
	}
	
	/**
	 * @param $conexion the $conexion to set
	 */
	public function setConexion($objeto) {
		$this->objeto = $objeto;
	}
	
	public function getCategorias($id_tipo_indicador){
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
		
		$result=pg_exec($db,
			"SELECT distinct(cat.id_categoria) as id ,cat.nombre 
				FROM inec_categoria cat 
				JOIN inec_indicador ind 
					ON ind.id_categoria=cat.id_categoria 
				WHERE cat.id_tipo_indicador=".$id_tipo_indicador
				."  ORDER BY cat.nombre"); // Sample of SQL QUERY
				
	    $tipo_indicador=array();
	    
        while($fetch = pg_fetch_array($result)){
        	$tipo_indicador[]=$fetch;
        }
        pg_close($db);       
	
		return ($tipo_indicador);
	}

	public function getCiudad($id_categoria){
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
		$result=pg_exec($db,
			"SELECT distinct(ind.id_ciudad) as id, ciu.nombre_ciudad as nombre 
				FROM inec_indicador ind 
				JOIN inec_ciudad ciu 
					ON ind.id_ciudad=ciu.id_ciudad
					AND ind.metodologia_indicador=ciu.metodologia_indicador 
				WHERE id_categoria=".$id_categoria." ORDER BY ciu.nombre_ciudad"); // Sample of SQL QUERY
		$ciudades=array();

        while($fetch = pg_fetch_array($result)){
        	$ciudades[]=$fetch;
        }
        pg_close($db);       
		return ($ciudades);
	}

	public function getSubCiudad($id_categoria,$nombre_ciudad=NULL){
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
		$sql="SELECT distinct(ind.id_ciudad) as id, ciu.nombre_ciudad as nombre 
				FROM inec_indicador ind 
				JOIN inec_ciudad ciu 
					ON ind.id_ciudad=ciu.id_ciudad
				WHERE id_categoria=".$id_categoria;
		if($nombre_ciudad)
			$sql.=" AND UPPER(TO_ASCII(ciu.nombre_ciudad,'LATIN1')) like UPPER(TO_ASCII('".$nombre_ciudad."%','LATIN1'))";
		$sql.=" ORDER BY ciu.nombre_ciudad"; // Sample of SQL QUERY
		
		$result=pg_exec($db,$sql);
		$ciudades=array();
	    
        while($fetch = pg_fetch_array($result)){
        	$ciudades[]=$fetch;
        }
        pg_close($db);       
		return ($ciudades);
	}	
	
	function getMetodologiasIndicador($id_categoria,$id_ciudad=NULL){
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
		
		$sql="SELECT distinct metodologia_indicador as id, metodologia_indicador as nombre
				FROM inec_indicador ind 
				WHERE id_categoria=".$id_categoria;
		if($id_ciudad)
			$sql.=" AND	id_ciudad=".$id_ciudad;
		$sql.="	ORDER BY metodologia_indicador"; // Sample of SQL QUERY
				
		$result=pg_exec($db,$sql);
		$metodologias=array();
	    
        while($fetch = pg_fetch_array($result)){
        	$metodologias[]=$fetch;
        }
        pg_close($db);
		return ($metodologias);
	}	
	
	function getIndicador($id_categoria,$id_ciudad=NULL,$metodologia_indicador=NULL){
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
		$sql="SELECT distinct ind.id_indicador as id, ind.nombre_grafico_indicador as nombre
				FROM inec_indicador ind 
				WHERE id_categoria=".$id_categoria;
		if($id_ciudad)
			$sql.=" AND	id_ciudad=".$id_ciudad;
		if($metodologia_indicador)
			$sql.=" AND	metodologia_indicador=".$metodologia_indicador;			
		$sql.="	ORDER BY nombre_grafico_indicador"; // Sample of SQL QUERY
				
		$result=pg_exec($db,$sql);
		$indicadores=array();
	    
        while($fetch = pg_fetch_array($result)){
        	$fetch['nombre_grafico_indicador']=utf8_encode(strtoupper($fetch['nombre_grafico_indicador']));
        	$indicadores[]=$fetch;
        }
        pg_close($db);       
		return ($indicadores);
	}	
	
	function getGraphData($id_categoria,$id_ciudad,$metodologia_indicador=NULL,$id_indicador=NULL){
	     
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
		    
		$where=" rin.id_categoria=$id_categoria ";
		if($id_ciudad)
			$where.=" AND rin.id_ciudad=$id_ciudad ";
		if($metodologia_indicador)
			$where.=" AND rin.metodologia_indicador=$metodologia_indicador ";
		if($id_indicador)	
			$where.=" AND rin.id_indicador=$id_indicador ";	
		
		$result=pg_exec($db,
		
		   "SELECT DISTINCT ind.nombre_grafico_indicador AS name, ARRAY_TO_STRING(array(
				SELECT rin.valor_numerico_resumen 
					    		FROM inec_resumen_indicador rin 
							WHERE $where
							AND ind.id_indicador=id_indicador
				),', ') AS data FROM inec_resumen_indicador rin 
							JOIN inec_indicador ind 
							ON rin.id_indicador=ind.id_indicador
							AND $where ");
	
	    $resumen_indicador=array();
		    
	    while($fetch = pg_fetch_array($result)){
	       	$resumen_indicador[]=$fetch;
	    }
	               
		pg_close($db);
		return json_encode($resumen_indicador);
    } 
	
    public function savePlantilla($arreglo){
	     
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
	               
	    $result=pg_exec($db,
	    "INSERT INTO plantilla (id, nombre, vzona, vsubzona, vmetodologia, vindicador, tipo_grafico)
		values (NEXTVAL('plantilla_seq'), '".$arreglo[0]."','".$arreglo[1]."','".$arreglo[2]."','".$arreglo[3]."','".$arreglo[4]."','".$arreglo[5]."')"); // Sample of SQL QUERY
	    pg_close($db);       
	    return $result;
    }

    function getPlantilla($id_plantilla){
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
		
		$sql="SELECT *
				FROM plantilla ind 
				WHERE id=".$id_plantilla;
			
		$result=pg_exec($db,$sql);
	    
        $plantilla = pg_fetch_array($result);
        
        pg_close($db);
		return ($plantilla);
	}	
    
	function getDatosXGrafico($codigo){
		$this->objeto->conectar();
		$db=$this->objeto->getConexion();
		
		$sql="SELECT *
				FROM pg_graficos 
				WHERE \"CODIGO\" ='".$codigo."'";
		
		$result=pg_exec($db,$sql);
	    
        $plantilla = pg_fetch_array($result);
        
        pg_close($db);
		return ($plantilla);
	}
}
?>